home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programmer Power Tools
/
Programmer Power Tools.iso
/
math
/
math.arc
/
C.LBR
/
TYPECONV.C
< prev
next >
Wrap
Text File
|
1988-07-21
|
2KB
|
46 lines
/*
** Demonstration of Type Conversion
** across assignments.
*/
main()
{
char c1,c2,c3;
int i1,i2,i3;
float f1,f2,f3;
c1 = 'x'; /* no conversion */
c2 = 1000; /* int constant demoted to char */
c3 = 6.02e23; /* float constant demoted to char */
printf("%c %c %c\n",c1,c2,c3);
/* Note that the character value is printed as is; the integer
** with a value of 1000 is converted to its binary equivalent
** of 1111101000 and truncated to the first 8 data bits which
** gives 11101000 or decimal 232 or the Greek symbol "phi"
** when the ASCII symbol is printed; and the conversion from
** float to char is meaningless and does not occur. */
i1 = 'x'; /* char constant promoted to int */
i2 = 1000; /* no conversion */
i3 = 6.02e23; /* float constant demoted to int */
printf("%d %d %d\n",i1,i2,i3);
/* Note that ASCII 'x' has an integer value of 120, and the
** character constant 'x' is promoted when we assign it to an
** integer. The floating point constant is demoted to the
** largest integer 32767 that is possible in the Microsoft
** C compiler and that number is returned as an integer. */
f1 = 'x'; /* x char constant promoted to float */
f2 = 1000; /* int constant promoted to float */
f3 = 6.02e23; /* no conversion */
printf("%f %f %f\n",f1,f2,f3);
/* There are no demoted values, everything is represented as
** its double precision floating point equivalent! */
}